package com.ruoyi.app.service;

import com.ruoyi.app.api.domain.AppUser;
import com.ruoyi.app.domain.AppUserCard;
import com.ruoyi.app.domain.bo.AppShareBo;
import com.ruoyi.app.domain.vo.AppShareVo;
import com.ruoyi.app.domain.vo.AppUserCardVo;
import com.ruoyi.common.core.domain.R;
import com.ruoyi.common.mybatis.core.page.PageQuery;
import com.ruoyi.common.mybatis.core.page.TableDataInfo;
import com.ruoyi.system.api.domain.SysDictData;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.Pattern;
import java.util.Collection;
import java.util.List;
import java.util.Map;

public interface IAppNewUserService {

    /**
     * APP新用户注册
     * @param phone
     * @param password1
     * @param password2
     */
    R<Object> registerAppNewUser(String phone, String password1, String password2);

    /**
     * 获取字典数据列表
     * @param dictType
     * @return
     */
    List<SysDictData> selectDictDataByType(String dictType);

    /**
     * 获取卡包列表 0 储蓄卡  1 信用卡
     * @param id
     * @param type
     * @return
     */
    List<AppUserCardVo> selectUserCard(String id, String type);

    /**
     * APP实名认证
     * @param id
     * @param userIdName
     * @param userIdCard
     * @param cardNo
     * @param cardBank
     * @param bankBranch
     * @param reservePhone
     * @param idCardFront
     * @param idCardBack
     */
    R<Object> appNewUserAuth(String id,String userIdName,String userIdCard,String cardNo, String cardBank,
                        String bankBranch, String reservePhone,String idCardFront, String idCardBack);

    /**
     * 商户认证
     * @param id
     * @param name
     * @param priCategory
     * @param contactName
     * @param contactPhone
     * @param businessLicense
     * @param code
     * @return
     */
    R<Object> appMerchantAuth(String id, String name, String priCategory, String contactName,
                              String contactPhone, String businessLicense, String code);

    /**
     * 添加信用卡
     * @param id
     * @param userIdName
     * @param userIdCard
     * @param cardNo
     * @param cardBank
     * @param phone
     * @param cardDate
     * @param cardEndorse
     * @return
     */
    R<Object> addCreditCard(String id,String userIdName,String userIdCard,String cardNo, String cardBank,
                             String phone, String cardDate,String cardEndorse);

    /**
     * 添加储蓄卡
     * @param id
     * @param userIdName
     * @param userIdCard
     * @param cardNo
     * @param cardBank
     * @param phone
     * @return
     */
    R<Object> addBankCard(String id, String userIdName, String userIdCard, String cardNo, String cardBank, String phone);
}
